package com.whminwei.edu.api.dc.dto.fspn.tch_base;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @author zhangjq
 * @since 2024-08-22
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class DcTeacherFspn {

    private List<DcTeacher> teachers;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcTeacher {
        private String teacherId;
        /**
         * 民族
         */
        private String nation;
        /**
         * 国籍地区、可修改
         */
        private String country;
        /**
         * 政治面貌
         */
        private String politicalStatus;
        /**
         * 入党时间
         */
        private String joinCcylTime;
        /**
         * 从教年月
         */
        private String startTeachDate;
        /**
         * 教师认证
         */
        private List<DcTchAffirm> tchAffirmList;
        /**
         * 教育经历
         */
        private List<DcEduExp> eduExpList;
        /**
         * 工作经历
         */
        private List<DcWorkExp> workExpList;
        /**
         * 班主任经历
         */
        private List<DcClassDir> classDirList;
        /**
         * 职业资格证书
         */
        private List<DcTchCert> tchCertList;
        /**
         * 专业技术职务
         */
        private List<DcMajorPost> majorPostList;
    }


    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcTchAffirm {
        /**
         * 认定年份
         */
        private int year;
        /**
         * 认定级别
         */
        private String level;
        /**
         * 认定类别
         */
        private String cate;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcEduExp {
        /**
         * 学历
         */
        private String background;
        /**
         * 学位
         */
        private String degree;
        /**
         * 专业
         */
        private String speciality;
        /**
         * 接受教育的院校或机构
         */
        private String school;
        /**
         * 接受教育的国家或地区
         */
        private String schoolArea;
        /**
         * 毕业年月
         */
        private String graduationDate;
        /**
         * 教育形式
         */
        private String type;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcWorkExp {
        /**
         * 工作单位
         */
        private String unit;
        /**
         * 工作单位性质（InstKindEnum）
         */
        private String unitType;
        /**
         * 工作岗位
         */
        private String post;
        /**
         * 工作起止年月
         */
        private String timeInterval;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcClassDir {
        /**
         * 开始时间
         */
        private String start;
        /**
         * 结束时间
         */
        private String end;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcTchCert {
        /**
         * 职业资格证书id
         */
        private String certId;
        /**
         * 证书图片ID
         */
        private String certImg;
        /**
         * 证书编号
         */
        private String certNo;
        /**
         * 颁发单位
         */
        private String unit;
        /**
         * 颁发单位级别
         */
        private String unitLevel;
        /**
         * 颁发日期
         */
        private String awardDate;
    }

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public static class DcMajorPost {
        private String majorPostId;
        /**
         * 评审单位
         */
        private String unit;
        /**
         * 评审日期(yyyy-MM-dd)
         */
        private String date;
        /**
         * 评审途径
         */
        private String type;
    }
}
